#ifndef jolfs_fuse_h_
#define jolfs_fuse_h_

#define FUSE_USE_VERSION 27
#include <fuse_lowlevel.h>

#include "jolfs/master_volume.h"

#include <map>

namespace jolfs
{
	// Forward declaration
	class INode;

	// Fuse volume
	//   class that handle the fuse part
	//   of jolfs. It makes association
	//   between fuse world and jolfs world.
	class FuseVolume
	{
		public:

			FuseVolume();
		
			// ACCESSORS

			// @return a reference to the master node.
			MasterVolume& master();

			// FUSE WRAPPERS
			void lookup(fuse_req_t req, fuse_ino_t parent, 
						const char *name);

		private:
			MasterVolume master_;

	};

	// ---------------------------------------------
	// I N L I N E S
  	// ---------------------------------------------
	inline FuseVolume::FuseVolume() 
	{}

	inline MasterVolume& FuseVolume::master()
	{
		return master_;
	}


}

#endif //
